<?php
class OrdemservicosServicosController extends AppController {

	var $name = 'OrdemservicosServicos';

	function index($os_id = null) {
		$this->OrdemservicosServico->recursive = 0;
		$this->paginate = array('conditions' => array('OrdemservicosServico.ordemservico_id' => $os_id));
		$servicos = $this->paginate();
		$this->set('servicos', $servicos);
	}

	function relatorioServicos($msg = null) {
		
		if ( $this->Session->read('Auth.Usuario.perfilacesso') == 'Administrador' ) {
			$periodo = $tipo = '';
			if ( !empty($this->data['OrdemservicosServico']['datainicial']) && !empty($this->data['OrdemservicosServico']['datafinal']) ) {
				$data1 = explode('/', $this->data['OrdemservicosServico']['datainicial']);
				$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
				$data2 = explode('/', $this->data['OrdemservicosServico']['datafinal']);
				$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
				$periodo = "created between '".$datainicial."' and '".$datafinal."'";
			}
			$ordemservico_ids = array();
			if ( !empty($this->data['OrdemservicosServico']['garantia']) && empty($this->data['OrdemservicosServico']['orcamento']) ) 
				$ordemservico_ids = $this->OrdemservicosServico->Ordemservico->find('list', array('conditions' => array('Ordemservico.tipo' => 'G')));
			if ( !empty($this->data['OrdemservicosServico']['orcamento']) && empty($this->data['OrdemservicosServico']['garantia']) )  
				$ordemservico_ids = $this->OrdemservicosServico->Ordemservico->find('list', array('conditions' => array('Ordemservico.tipo' => 'O')));
			
			if ( !empty($ordemservico_ids) )
				$tipo = 'ordemservico_id in ('.implode(',', $ordemservico_ids).')';
				
			if ( !empty($periodo) && !empty($tipo) ) 
				$condicao = "where ".$tipo." and ".$periodo."";
			elseif ( !empty($periodo) && empty($tipo) )
				$condicao = "where ".$periodo;
			elseif ( empty($periodo) && !empty($tipo) )
				$condicao = "where ".$tipo;
			else
				$condicao = '';
			
			$servico_ids = $this->OrdemservicosServico->contarOSPorServico($condicao);
			foreach ( $servico_ids as $sql ) {
				$servico['descricao'] = $this->OrdemservicosServico->Servico->field('descricao', array('Servico.id' => $sql[0]['servico_id']));
				$servico['quantidadeOs'] = $sql[0]['count'];
				
				$os_servicos_ids = $this->OrdemservicosServico->find('list', array('conditions' => array('OrdemservicosServico.servico_id' => $sql[0]['servico_id'])));
				$os_ids = array();
				foreach ( $os_servicos_ids as $id ) {
					$os_ids[] = $this->OrdemservicosServico->field('ordemservico_id', array('OrdemservicosServico.id' => $id, 'OrdemservicosServico.servico_id' => $sql[0]['servico_id']));
				}
				$emdia = $expirando = $atrasado = 0;
				foreach ( $os_ids as $OS ) {
					$os = $this->OrdemservicosServico->Ordemservico->find('first', array('conditions' => array('Ordemservico.id' => $OS), 'recursive' => -1, 'fields' => array('Ordemservico.id', 'Ordemservico.entregadata', 'Ordemservico.created')));
					list($dia, $mes, $ano) = explode('/', date('d/m/Y', strtotime($os['Ordemservico']['created'])));
					list($hora, $minuto, $segundo) = explode(':', date('H:i:s', strtotime($os['Ordemservico']['created'])));
					$dataEntrada = mktime($hora, $minuto, $segundo, $mes, $dia, $ano);
					
					list($dia1, $mes1, $ano1) = explode('/', $os['Ordemservico']['entregadata']);
					$dataEntrega = mktime(23, 59, 59, $mes1, $dia1, $ano1);
					
					list($dia2, $mes2, $ano2) = explode('/', date('d/m/Y'));
					list($hora2, $minuto2, $segundo2) = explode(':', date('H:i:s'));
					$tempoAtual = mktime($hora2, $minuto2, $segundo2, $mes2, $dia2, $ano2);
					
					$prazoTotal = $dataEntrega - $dataEntrada;
					$prazoRestante = $dataEntrega - $tempoAtual;
					
					if ( $prazoTotal < 0 )
						$prazoTotal = 1;
					$porcentagem = ($prazoRestante / $prazoTotal ) * 100;
					if ($porcentagem > 15)
						$emdia++;
					elseif ($porcentagem < 15 && $porcentagem > 0)
						$expirando++;
					else
						$atrasado++;
					
				}
				$total = $emdia + $expirando + $atrasado;
				$servico['porcentagemDia'] = ($emdia / $total) * 100;
				$servico['porcentagemExp'] = ($expirando / $total) * 100;
				$servico['porcentagemAtr'] = ($atrasado / $total) * 100;
				
				$servicos[] = $servico;
			}
			$this->set(compact('servicos', 'msg'));
			
		} else {
			$this->Session->write('msg', 'Você não tem acesso a essa funcionalidade.');
			$this->redirect('/menu/');
		}
		//if($x) {
			//$this->layout = 'pdf';
			//$this->render('relatorioServicosPdf');
		//}
	}

	function relatorioServicosPdf() {
		
		$periodo = $tipo = '';
		if ( !empty($this->data['OrdemservicosServico']['datainicial']) && !empty($this->data['OrdemservicosServico']['datafinal']) ) {
			$data1 = explode('/', $this->data['OrdemservicosServico']['datainicial']);
			$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
			$data2 = explode('/', $this->data['OrdemservicosServico']['datafinal']);
			$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
			$periodo = "created between '".$datainicial."' and '".$datafinal."'";
		}
		$ordemservico_ids = array();
		if ( !empty($this->data['OrdemservicosServico']['garantia']) && empty($this->data['OrdemservicosServico']['orcamento']) ) 
			$ordemservico_ids = $this->OrdemservicosServico->Ordemservico->find('list', array('conditions' => array('Ordemservico.tipo' => 'G')));
		if ( !empty($this->data['OrdemservicosServico']['orcamento']) && empty($this->data['OrdemservicosServico']['garantia']) )  
			$ordemservico_ids = $this->OrdemservicosServico->Ordemservico->find('list', array('conditions' => array('Ordemservico.tipo' => 'O')));
		
		if ( !empty($ordemservico_ids) )
			$tipo = 'ordemservico_id in ('.implode(',', $ordemservico_ids).')';
			
		if ( !empty($periodo) && !empty($tipo) ) 
			$condicao = "where ".$tipo." and ".$periodo."";
		elseif ( !empty($periodo) && empty($tipo) )
			$condicao = "where ".$periodo;
		elseif ( empty($periodo) && !empty($tipo) )
			$condicao = "where ".$tipo;
		else
			$condicao = '';
		
		$servico_ids = $this->OrdemservicosServico->contarOSPorServico($condicao);
		$servicos = array();
		foreach ( $servico_ids as $sql ) {
			$servico['descricao'] = $this->OrdemservicosServico->Servico->field('descricao', array('Servico.id' => $sql[0]['servico_id']));
			$servico['quantidadeOs'] = $sql[0]['count'];
			
			$os_servicos_ids = $this->OrdemservicosServico->find('list', array('conditions' => array('OrdemservicosServico.servico_id' => $sql[0]['servico_id'])));
			$os_ids = array();
			foreach ( $os_servicos_ids as $id ) {
				$os_ids[] = $this->OrdemservicosServico->field('ordemservico_id', array('OrdemservicosServico.id' => $id, 'OrdemservicosServico.servico_id' => $sql[0]['servico_id']));
			}
			$emdia = $expirando = $atrasado = 0;
			foreach ( $os_ids as $OS ) {
				$os = $this->OrdemservicosServico->Ordemservico->find('first', array('conditions' => array('Ordemservico.id' => $OS), 'recursive' => -1, 'fields' => array('Ordemservico.id', 'Ordemservico.entregadata', 'Ordemservico.created')));
				list($dia, $mes, $ano) = explode('/', date('d/m/Y', strtotime($os['Ordemservico']['created'])));
				list($hora, $minuto, $segundo) = explode(':', date('H:i:s', strtotime($os['Ordemservico']['created'])));
				$dataEntrada = mktime($hora, $minuto, $segundo, $mes, $dia, $ano);
				
				list($dia1, $mes1, $ano1) = explode('/', $os['Ordemservico']['entregadata']);
				$dataEntrega = mktime(23, 59, 59, $mes1, $dia1, $ano1);
				
				list($dia2, $mes2, $ano2) = explode('/', date('d/m/Y'));
				list($hora2, $minuto2, $segundo2) = explode(':', date('H:i:s'));
				$tempoAtual = mktime($hora2, $minuto2, $segundo2, $mes2, $dia2, $ano2);
				
				$prazoTotal = $dataEntrega - $dataEntrada;
				$prazoRestante = $dataEntrega - $tempoAtual;
				
				if ( $prazoTotal < 0 )
					$prazoTotal = 1;
				$porcentagem = ($prazoRestante / $prazoTotal ) * 100;
				if ($porcentagem > 15)
					$emdia++;
				elseif ($porcentagem < 15 && $porcentagem > 0)
					$expirando++;
				else
					$atrasado++;
				
			}
			$total = $emdia + $expirando + $atrasado;
			$servico['porcentagemDia'] = ($emdia / $total) * 100;
			$servico['porcentagemExp'] = ($expirando / $total) * 100;
			$servico['porcentagemAtr'] = ($atrasado / $total) * 100;
			
			$servicos[] = $servico;
		}
		$this->set(compact('servicos'));
		$this->layout = 'pdf';
		
	}
		
}
?>